在算法训练过程中,一个项目会包含以下的文件:数据集、代码、模型、任务的输出。
我们针对以上四种文件类型,进行了隔离存放:
文件夹 | 具体作用 | 读写权限 |
---|---|---|
/data/$username/$dataset_name | 用于存放名为$dataset_name的数据集 | 本人所属的私有数据集可写,其他仅可读。公开数据集(即使是本人所公开的)或他人分享的数据集,都不可写 |
/code | 用于存放该项目中用户上传的代码 | 仅调试环境可写。确切地说,仅调试环境下所做的更改会被保存,执行环境下虽然也可以向这个目录写入,但并不会被持久化保存 |
/model/$username/$model_name | 用于存放名为$model_name的预训练模型 | 同数据集 |
/output | 用于存放该项目中某个任务的输出文件 | 可写,但仅限于本次任务可读,你无法跨任务读到其他的/output,也就是说,如果你的输出希望在多个任务间共享,那不要使用这个目录,而是用数据集目录 |
/myproject_outputs | 该项目下所有任务的输出,以任务编号分目录存放 | 只读。这一目录是为了便利下载。 |
举例:
比如创建项目"DemoProject",在创建项目时,选择了数据集"MNIST",并选择预训练模型"ResNet"(假设这个数据集和模型是用户名为bitahub的用户公开发布的),然后上传了一个"main.py"的代码文件,那么此时:
- main.py代码文件,将会放入项目的 /code 目录;
- 在main.py文件中,如果需要获取MNIST数据集文件,需要使用 /data/bitahub/MNIST/… 的格式;
- 在main.py文件中,如果需要获取ResNet模型中的文件,需要使用 /model/bitahub/ResNet 的格式;
- 在main.py文件中,如果想保存模型训练后的参数,请使用 /output/checkpoint.pth 类似的目录。
注意:
- 每个任务都有独立的/output,这是它与
数据集
和模型
的不同处,也就说同一个项目
下,每一个任务
看到的 /data和/model在实际存储上是同一份,而/output则不是。 - 那每个任务看到的/code是同一份吗?这个要分情况讨论:(1)如果启动的是
调试任务
,则是同一份,是最新的代码;(2)如果启动的是执行任务
,那么提交任务时,系统会自动对代码用git工具打上tag,任务看到的是这一时刻tag对应的版本。每一个任务详情页中有代码快照
栏目,显示的是对应tag下的代码文件。